// 注册组件的入口函数 Component({ })
// 📃 分页1. 请求参数格式定义成变量
let params = {
  limit: 30,
  order: 'hot',
  skip: 0       // 初始值跳过 0 张
};
Component({
  /*** 组件的初始数据 */
  data: {
    // 🚩 2. 初始化数据推荐列表
    recommends: [], // 焦点广告
    months: [], // 月度推荐
    hots: [], // 热门推荐
    formatDate: '', // 日期
    hasMore: true,  // 还有更多数据
  },
  // 不需要做页面绑定的数据，不要写到 data 中，写到外面即可

  /** 组件的方法列表 */
  methods: {
    // 获取当前日期的方法封装
    getNowDate() {
      // 创建日期对象，保存到常量 date 中
      let date = new Date();
      let mm = date.getMonth() + 1; // 从日期对象中获取月份，从 0 开始，所以人为要 + 1
      let dd = date.getDate(); // 从日期对象中获取日期
      // 如果小于 10 ，前面补上 0
      if (mm < 10) {
        mm = '0' + mm;
      }
      if (dd < 10) {
        dd = '0' + dd;
      }
      // 按页面格式拼接字符串
      const formatDate = mm + '/' + dd;
      // console.log(formatDate);
      // 更新日期到页面中
      this.setData({
        formatDate
      });
    },
    // 网络请求封装
    getRequest() {
      // 发送网络请求
      wx.request({
        url: 'http://157.122.54.189:9088/image/v3/homepage/vertical',
        method: 'GET',
        // 📃 分页2. 使用抽离请求参数
        data: params,
        success: (result) => {
          // 先取出来 res
          let { res } = result.data;
          // 1. 获取推荐数据
          let recommends = res.homepage[1].items;
          // 获取月份数据
          let months = res.homepage[2].items;
          // 获取热门数据
          // let hots = res.vertical;
          // 如果这次请求返回的热门数据长度为 0
          if(res.vertical.length === 0){
            // 把 hasMore 变量改为 false 标记一下没有更多数据了。
            this.setData({ hasMore: false });
            // return 程序没有必要往后执行了
            return;
          }
          // 📃 分页3. 新旧数组连接，把原本的数组数据展开，把请求到的数据展开
          let hots = [ ...this.data.hots, ...res.vertical ];
          // console.log(recommends, months, hots);
          // 3. 更新组件绑定的数据
          this.setData({ recommends, months, hots });
        }
      });
    },
    // 滚动到底部的事件处理函数
    toBottom() {
      // 获取 hasMore 变量的值
      let { hasMore } = this.data;
      if(hasMore === false){
        // wx.showToast({
        //   icon:'none',             // 不需要图标
        //   title: '我也是有底线的',  // 提示的文字
        // })
        // 跳出函数，程序不往后执行了
        return;
      }
      // 📃 分页4. 触底的时候，跳过前30条
      params.skip += 30;
      console.log(params);
      // 📃 分页5. 根据新的参数，再次发起新的网络请求，请求内部记得是新旧数组连接起来
      this.getRequest();
      console.log('你滚动触底了，再次发送网络请求，拿到更多的数据');
    }
  },
  // 生命周期
  lifetimes: {
    // 监听自定义组件添加到页面中
    attached() {
      // 调用 methods 封装的获取当前日期的函数
      this.getNowDate();
      // 调用网络请求函数 - 以后做分页的时候还要调用，所以一定做到要封装这一步
      this.getRequest();
    },
    // 🕷 bug修复：组件从页面中移除时，skip 从新变成 0
    detached(){
      params.skip = 0;
    }
  }
})